The '149 application (cited above in the RELATED APPLICATIONS section) describes employing trunking in a Fibre Channel network topology. Fibre Channel is a American National Standards Institute (ANSI) set of standards which describes a high performance serial transmission protocol which supports higher level storage and networking protocols.
The '149 application describes, in the context of a Fibre Channel topology, trunking capabilities for backend storage array designs. For example, the '149 application describes, with reference to FIG. 27 of the '149 application, multiple duplicate cascades between Loop Switches in switching mode, to increase throughput between adjacent Loop Switches. FIG. 27 of the '149 application is reproduced herein as FIG. 1.
The duplicate cascades can be simultaneously activated without creating an invalid loop topology. Furthermore, load balancing between the cascades on an initiator basis is supported. In a system with two initiators and a primary/duplicate cascade pair, each initiator can have a logical cascade chain dedicated to it providing approximately 2× the throughput of a single cascade system.
Referring to FIG. 1 as an example, initiator HBA1 1801 has a full bandwidth path 1813, 1829, 1831 thru the string of SBODs 1803, 1804, 1805. Initiator HBA2 1802 also has a full bandwidth path 1814, 1830, 1832 thru the string of SBODs 1803, 1804, 1805. Simultaneous communication between HBA1 and a disk in an SBOD and HBA2 and a disk in an SBOD can occur. For example, HBA1 can communicate with Disk 1 1817 in SBOD 1803 using the path 1813, 1817 at the same time HBA2 1802 can communicate with Disk 16 1819 in SBOD 1803 using the path 1814, 1819. The number of duplicate cascades in a trunk is not limited by the hardware. A trunk group could be defined as 21 trunks in a 22 port ASIC if so desired (I port must not be assigned to the trunk to provide the other side of the connection). If more initiators than cascades are added, throughput is affected based on the relative traffic assigned to each trunk within a group.
Load balancing among trunks is also discussed in the '149 application. Broadly speaking, most trunking implementations operate in either an autonomous or dynamic mode to balance traffic among trunks. Autonomous methods of load balancing generally assign trunks statically (for example, using round robin assignments). Dynamic load balancing actively monitors traffic on trunks and reassigns traffic flows to balance loads.
It is desired to minimize lockup conditions when initiating connections on the trunks.